package rsj.service.product;

import com.alibaba.fastjson.JSON;
import com.rlyy.aibase.utils.base.TableNode;
import rsj.api.product.entity.Product;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 产品
 *
 * @author yuanqinglong
 * @since 2021/7/16 11:51
 */
public interface IProductService {


    /**
     * 产品类别列表
     *
     * @return {@link List<Product>}
     */
    List<Product> productList();


    /**
     * 帐户配置产品
     *
     * @param orgId 机构id
     * @return {@link List<Product>}
     */
    List<Product> accountConfigurationProducts(String orgId);


    /**
     * 按产品类型分类
     *
     * @param tableNode 表节点
     * @return {@link List<Product>}
     */
    default List<Product> classifiedByProductType(TableNode tableNode) {
        List<Product> products = JSON.parseArray(tableNode.toJson(), Product.class);
        Map<String, List<Product>> categoryMap = products.stream().collect(Collectors.groupingBy(Product::getPrtyFname));
        List<Product> productOrderList = new ArrayList<>();
        categoryMap.forEach((category, productList) -> {
            products.sort(Comparator.comparing(Product::getProdUid));
            productOrderList.addAll(productList);
        });
        return productOrderList;
    }


    /**
     * 更新产品销量
     *
     * @param sales  销售量
     * @param prodId 产品id
     */
    void updateProductSales(Integer sales, String prodId);

}
